const path = require('path')
const fileUtils = require('../utils/file_utils') 
const WebSocket = require('ws')
// 创建 WebSocket 服务端对象, 他所绑定的端口号是9998
const wss = new WebSocket.Server({
    port:9998
})
// 服务端开起了监听
module.exports.listen = () => {
    // 对客户端的链接事件进行监听
    // client :代表的是客户端链接的socket对象
    wss.on('connection', client => {
        console.log('有客户端链接成功了...')
        // 对客户端的链接对象进行message事件的监听
        // msg : 由客户端发给服务端的数据
        client.on('message',async msg => {
        console.log('客户端发送数据给服务端了:'+ msg)
        let payload = JSON.parse(msg) // json格式的字符串
        const action = payload.action
        if(action === 'getData'){
            let filePath = '../data/' + payload.chartName + '.json'
            // 定义要读取本地 的哪个 json 
            // payload.charName // trend seller map rank hot stock
            filePath = path.join(__dirname, filePath)
            // 组装路径
            const ret = await fileUtils.getFileJsonData(filePath)
            // 需要在服务端获取到数据的基础之上, 增加一个data的字段
            // data 所对应的值 , 就是某个json文件的内容
            payload.data = ret
            client.send(JSON.stringify(payload))
        } else {
            // 原封不动的将所接收到的数据转发给每一个处于连接状态的客户端
            // wss.clients // 所有客户端的链接 他是个数组可以循环遍历
            wss.clients.forEach(client => {
             client.send(msg)
            })
        }
        // 由服务端往客户端发送数据
        // client.send('hello socket from backend')
        })
    })}